package com.eagle.springservlet.support;



import com.eagle.springservlet.config.AppConfig;
import com.eagle.springservlet.config.RootConfig;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/***
 * Description
 * 异步的Spring MVC，和AsyncServlet（异步Servlet）不一样
 * 这个类会自动被servlet容器引导，不需要注解，但它不能被springboot的嵌入式容器加载
 * 因为其顶层接口WebApplicationInitializer会被SpringServletContainerInitializer所引导
 * 而SpringServletContainerInitializer来自于ServletContainerInitializer接口，
 * 而springboot引导的是ServletContextInitializer
 * @author: eagle
 * @since: 2019/1/8
*/
//web容器启动的时候创建对象；调用方法来初始化容器以前前端控制器
//@ComponentScan(basePackages = "com.eagle.springservlet.controller")
public class DefaultAnnotationConfigDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

//	//获取根容器的配置类；（Spring的配置文件）   父容器；
//	@Override
//	protected Class<?>[] getRootConfigClasses() {
//		// TODO Auto-generated method stub
//		return new Class<?>[]{RootConfig.class};
//	}

	//获取web容器的配置类（SpringMVC配置文件）  子容器；
	@Override
	protected Class<?>[] getServletConfigClasses() {
		// TODO Auto-generated method stub
		return new Class<?>[]{AppConfig.class};
	}

	//获取DispatcherServlet的映射信息
	//  /：拦截所有请求（包括静态资源（xx.js,xx.png）），但是不包括*.jsp；
	//  /*：拦截所有请求；连*.jsp页面都拦截；jsp页面是tomcat的jsp引擎解析的；
	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String[]{"/"};
	}

	@Override
	protected Class<?>[] getRootConfigClasses() { // web.xml
		return new Class[0];
	}

//	@Override
//	protected Class<?>[] getServletConfigClasses() { // DispatcherServlet
//		return new Class[]{
//				getClass() // 返回当前类
//		};
//	}

//	@Override
//	protected String[] getServletMappings() {
//		return new String[]{"/"};
//	}
}
